package com.zyf;

import java.util.Scanner;

/**
 * 2 回文数
 * 判断一个正数是否是回文数,回文数是指正序(从左到右) 和 倒叙(从右到左) 读  都是一样的整数

示例 1 
输入 :  121
输出 :  true
示例 2 
输入 :  -121
输出 :  false
解释 : 从左到右是 -121.从右到左是 121-  因此不是回文数
示例 3
输入 :  10
输出 :  false
解释 : 从右到左为 01 因此不是回文数

 * @author lenovo
 * @Date 2020年7月2日
 * @Time 下午1:34:56
 */
public class _02_palindromeNumber {

	public static void main(String[] args) {
		System.out.println("请输入一个数 : ");
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		if (palindrome(n) == true) {
			System.out.println(n + "是回文数!");
		}else {
			System.out.println(n + "不是回文数!");
		}
	}
	/**
	 * 判断回文数方法
	 * @param n
	 * @return 一个boolean类型的变量b1,用来记录是不是回文数
	 * 
	 * 思路:
	 * 把接收来的整数转换为字符串,定义两个变量首尾遍历字符串
	 * 循环比较字符
	 * 循环结束字符一样,说明是回文数
	 * 比较次数为s1.length()/2即可,字符串长度为奇数时,中间的字符跟自己比较是一样的
	 */
	public static boolean palindrome(int n) {
		String s1 = String.valueOf(n);
		char c1,c2;
		boolean b1 = true;
		for (int i = 0; i < s1.length()/2; i++) {
			//c1表示首
			//c2表示尾
			c1 = s1.charAt(i);
			c2 = s1.charAt(s1.length()-i-1);
			if (c1 != c2) {
				b1 = false;
				//一旦发现不一样,直接跳出
				break;
			}
		}
		return b1;
	}
}
